ExcelVBAPartsCollection Home Excel Reference Manual DownLoad My Profile
Menu Back Next Links Excel Function Manual Myself My BBS


印   刷

 





ページ設定

 印刷のページレイアウトの設定を行うには、PageSetup プロパティ(オブジェクト)を使用します。
 ページ設定属性 (左余白、下余白、用紙サイズなど) を、プロパティの値として設定します。下表は、Excel の「ページ設定」ダイアログボックスにある「ページ」「余白」「ヘッダー/フッター」「シート」の各パネルの内容を表したものです。
 
 ページ設定で複数のプロパティを同時に設定するときは、With ステートメントを使うと便利です。
   With ActiveSheet.PageSetup
     <設定内容(下表の必要項目)>
   End With

  [ 指定例:セルA1:C10の範囲を縦位置で印刷します ]
   With ActiveSheet.PageSetup
     .PrintArea = "$A1:$C$10"
     .Orientation = xlPortrait
   End With

 下表のプロパティの値は、PrintQuality、余白関係を除いて既定値(何も指定していない状態)です。
設定内容 プロパティと値の内容と意味
「ページ」パネル関係
印刷の向き Orientation = xlPortrait 
xlPortrait (縦)、xlLandscape (横)
拡大縮小印刷 Zoom = 100
縦または横が1ページに収まらないシートを印刷するときに、縦または横を何ページ分で収めるかを指定するときは、Zoom = False に設定し、下記により縦・横を指定します。
FitToPagesWide = <横の頁数>
FitToPagesTall = <縦の頁数>
用紙サイズ PaperSize = xlPaperA4
用紙の大きさを指定します。指定内容は、PaperSize プロパティのヘルプで確認してください。
印刷品質 PrintQuality = (1) 
平方向の印刷品質 (1) または垂直方向の印刷品質 (2) を指定します。プリンタによっては、垂直方向の印刷品質を制御していない場合がありますので、通常は指定しません。
先頭ページ番号 FirstPageNumber = xlAutomatic
印刷するシートの先頭ページの番号を設定します。xlAutomatic の場合、自動的に先頭ページの番号が選択されます。
「余白」パネル関係
上余白 TopMargin = Application.CentimetersToPoints(2.5)
余白は、ポイント単位です。下記はポイント単位に変換する命令です
CentimetersToPoints → センチメートルからポイントに変換
InchesToPoints → インチからポイントに変換
以下、余白について同じです。
ヘッダー余白 HeaderMargin = Application.CentimetersToPoints(1) 
左余白 LeftMargin = Application.CentimetersToPoints(2) 
右余白 RightMargin = Application.CentimetersToPoints(2)
下余白 BottomMargin = Application.CentimetersToPoints(2.5) 
フッター余白 FooterMargin = Application.CentimetersToPoints(1)
ページ中央(水平) CenterHorizontally = False
True にすると、データ印刷部分 (余白を除く)を水平方向の中央寄せ にして印刷します。
ページ中央(垂直) CenterVertically = False
True にすると、データ印刷部分 (余白を除く)を垂直方向の中央寄せ にして印刷します。
「ヘッダー/フッター」パネル関係
左側ヘッダー LeftHeader = "" 
ヘッダー/フッターの指定方法は、次項の「ヘッダー/フッターの書式コードと内容を参照してください。以下ヘッダー/フッターについて同じ。
中央部ヘッダー CenterHeader = ""
右側ヘッダー RightHeader = "" 
左側フッター LeftFooter = ""
中央部フッター CenterFooter = "" 
右側フッター RightFooter = "" 
「シート」パネル関係
印刷範囲 PrintArea = ""
印刷するセル範囲を、コード記述時の言語の A1 形式の文字列で設定します。文字列型 (String) の値を使用します。
行のタイトル PrintTitleRows = ""
印刷が複数ページにわたるとき、各ページの上端に常に表示するセルを含む行を設定します。文字列型 (String) の値を使用します。行の一部だけを指定しても、行全体が選択されます。
列のタイトル PrintTitleColumns = ""
印刷が複数ページにわたるとき、各ページの左端に常に表示するセルを含む列を設定します。文字列型 (String) の値を使用します。列の一部だけを指定しても、列全体が選択されます。
枠線印刷 PrintGridlines = False
True にすると、セルの枠線を印刷します。
白黒印刷 BlackAndWhite = False
True にすると、印刷対象を白黒で印刷します。
簡易印刷 Draft = False
True にすると、印刷時にシートのグラフィックスを印刷しません。
行列番号印刷 PrintHeadings = False 
True にすると、シートの行番号と列番号を印刷します。
コメント印刷 PrintComments = xlPrintNoComments
シートのコメントの表示方法を指定します。
xlPrintNoComments → コメントを印刷しません。
xlPrintInPlace → 画面に表示されているコメントだけを印刷します。
xlPrintSheetEnd → 印刷の最後に別紙でコメントだけ印刷します。
ページの方向 Order = xlDownThenOver
縦・横複数ページにわたって印刷されるときに、ページ番号を付ける順番を設定します。
xlDownThenOver → 左から右
xlOverThenDown → 上から下

1 拡大縮小印刷

処理内容:シートを 1 ページの幅と高さに収まるように縮小印刷します
Sub PageSetup_1()
With Worksheets("Sheet1").PageSetup
.Zoom = False
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
End Sub


処理内容:シートの幅を1ページに収まるように縮小印刷します
Sub PageSetup_2()
With Worksheets("Sheet1").PageSetup
.Zoom = False         '---拡大・縮小率を指定しない
.FitToPagesTall = False   '---縦方向は指定しない
.FitToPagesWide = 1      '---横方向 1 ページで印刷
End With
End Sub


処理内容:シートの高さを1ページに収まるように縮小印刷します
Sub PageSetup_3()
With Worksheets("Sheet1").PageSetup
.Zoom = False        '---拡大・縮小率を指定しない
.FitToPagesTall = 1     '---縦方向 1 ページで印刷
.FitToPagesWide = False  '---横方向は指定しない
End With
End Sub





ヘッダー/フッターの設定

 ヘッダーフッターには、文字だけでなく、ファイル名や日付、日時、ページ番号なども設定することができます。下表は、ヘッダー/フッターに指定できる書式コードを示したもので、これらを組み合わせて指定します。なお、VBA のコード記述に際しては、それぞれのコードを[" "]で囲みます。

書式コード

内               容

&L このコードに続く文字列を左詰めに配置します。
&C このコードに続く文字列を中央揃えに配置します。
&R このコードに続く文字列を右詰めに配置します。
&E 文字列を二重下線付きで印刷します。
&X 上付き文字を印刷します。
&Y 下付き文字を印刷します。
&B 文字列を太字で印刷します。
&I 文字列を斜体で印刷します。
&U 文字列を下線付きで印刷します。
&S 文字列を取り消し線付きで印刷します。
&D 現在の日付を印刷します。
&T 現在の時刻を印刷します。
&F ファイルの名前を印刷します。
&A シート見出し名を印刷します。
&P ページ番号を印刷します。
&P+ <数値> ページ番号に 指定した <数値> を加えた値を印刷します。
&P- <数値> ページ番号から指定した <数値> を引いた値を印刷します。
&& アンパサンド (&) を 1 つ印刷します。
& "<Font名>" 指定したフォントで文字を印刷。フォント名は、必ず半角の二重引用符 (") で囲みます。
&nn 指定したフォント サイズで文字を印刷。nn には、ポイント数を表す 2 桁の数値を指定します。

&N

ファイルのすべてのページ数を印刷します。





ヘッダー/フッターの指定

処理内容:センターヘッダーにタイトル(フォント→MS 明朝、太字、10ポイント)を指定
Sub Header_1()
Worksheets("Sheet1").PageSetup.CenterHeader = "&""MS 明朝,太字""&10タイトル"
End Sub


処理内容:センターヘッダーのタイトル(フォント→MS 明朝、太字、10ポイント)を変数で指定
Sub Header_2()
Dib HeaderTitle As String()
HeaderTitle = "タイトル"
Worksheets("Sheet1").PageSetup.CenterHeader = "&""MS 明朝,太字""&10" & HeaderTitle
End Sub


処理内容:ライトヘッダーに日付と時刻を指定
Sub Header_3()
Worksheets("Sheet1").PageSetup.RightHeader = "&D&T"
End Sub


処理内容:センターフッターにページ番号と総ページ数を指定
Sub Footer_1()
Worksheets("Sheet1").PageSetup.CenterFooter = "&P /&N "
End Sub


処理内容:ライトフッターにファイル名とシート名を指定
Sub Footer_2()
Worksheets("Sheet1").PageSetup.RightFooter = "&F /&A"
End Sub





印刷範囲の設定

1 特定の印刷範囲を指定

処理内容:印刷するセル範囲(B2:F10)を指定します
Sub PrintArea_1()
ActiveSheet.PageSetup.PrintArea = "$B$2:$F$10"
End Sub


処理内容:印刷する行範囲(1行目から10行目まで)を指定します
Sub PrintArea_2()
ActiveSheet.PageSetup.PrintArea = "$1:$10"
End Sub


処理内容:印刷する列範囲(D列からH列まで)を指定します
Sub PrintArea_3()
ActiveSheet.PageSetup.PrintArea = "$D:$H"
End Sub


処理内容:複数の印刷範囲(B2:E7 までと B9:E13 まで)を指定します
Sub PrintArea_4()
ActiveSheet.PageSetup.PrintArea = "$B$2:$E$7,$B$9:$E$13"
End Sub





2 可変範囲の印刷範囲を指定

処理内容:セルB1を基準とするリスト範囲を指定します
Sub PrintArea_5()
Worksheets("Sheet1").Select
Range("B1").CurrentRegion.Select
ActiveSheet.PageSetup.PrintArea = Selection.Address
End Sub


処理内容:A列の最終行を調べてA2からBA最終行までを指定します
Sub PrintArea_6()
Worksheets("Sheet1").Select
LRow = Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
ActiveSheet.PageSetup.PrintArea = "A2:BA" & LRow
End Sub


処理内容:Cells」に変数を利用した印刷範囲を指定します
Sub PrintArea_7()
Dim YEND As Long,XEND As Long
Worksheets("Sheet1").Select
Cells(1, 1).CurrentRegion.Select
YEND = Selection.Row + Selection.Rows.Count - 1
XEND = Selection.Column + Selection.Columns.Count - 1
ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(YEND, XEND)).Address
End Sub


処理内容:印刷範囲をマウスで指定します
Sub PrintArea_8()
Dim pArea As Range
Worksheets("Sheet1").Select
Prompt = "印刷範囲をマウスでドラッグして下さい。"
Set pArea = Application.InputBox(Prompt, Type:=8)
If pArea Is Nothing Then Exit Sub
ActiveSheet.PageSetup.PrintArea = pArea.Address
End Sub

3 印刷範囲罫線の消去

処理内容:印刷範囲罫線を消去します
Sub PrintArea_9()
Worksheets("Sheet1").Select
ActiveSheet.PageSetup.PrintArea = ""
End Sub





改頁位置の設定

1 改頁の設定

処理内容:改ページを設定(水平・・・指定セルの上)します
Sub PageBreaks_1()
Worksheets("Sheet1").Select
ActiveSheet.HPageBreaks.Add Before:=ActiveCell
End Sub


処理内容:改ページを設定(垂直・・・指定セルの左)します
Sub PageBreaks_2()
Worksheets("Sheet1").Select
ActiveSheet.VPageBreaks.Add Before:=ActiveCell
End Sub


処理内容:行 50 の上に、手動改ページを設定します
Sub PageBreaks_3()
Worksheets("Sheet1").Rows(50).PageBreak = xlPageBreakManual
End Sub


処理内容:列 Hの左に、手動改ページを設定します
Sub PageBreaks_4()
Worksheets("Sheet1").Columns("J").PageBreak = xlPageBreakManual
End Sub


処理内容:A列のコードがかわるときに改ページします
Sub PageBreaks_5()
Dim R1 As Integer,R2 As Integer,Data1 As String,Data2 As String
Worksheets("Sheet1").Select
R1 = 2
R2 = R1
Data1 = Cells(R1, 1)
With ActiveSheet
.PageSetup.PrintTitleRows = "$1:$1" ' タイトル表示行
Do
Do
Data2 = Data1
R1 = R1 + 1
Data1 = Cells(R1, 1)
Loop Until Data1 <> Data2
.PageSetup.PrintArea = Format(R2) & ":" & Format(R1 - 1)
.PrintPreview
R2 = R1
Loop Until Data1 = ""
.PageSetup.PrintArea = False
.PageSetup.PrintTitleRows = False
End With
End Sub


処理内容:A列のコードがかわるときに改ページを設定して印刷します
Sub PageBreaks_6()
Dim lRow As Long,code As Variant
Worksheets("Sheet1").Select
Cells.PageBreak = xlPageBreakNone
lRow = Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
code = Cells(2, 1).Value
For Each r1 In Range(Cells(2, 1), Cells(lRow, 1))
If r1.Value <> code Then
Rows(r1.Row).PageBreak = xlPageBreakManual
code = r1.Value
End If
Next
ActiveSheet.PrintOut
Cells.PageBreak = xlPageBreakNone
End Sub

2 改ページ数の取得

処理内容:縦の改ページ数を取得します
Sub PageBreaks_7()
MsgBox Worksheets("Sheet1").VPageBreaks.Count
End Sub


処理内容:横の改ページ数を取得します
Sub PageBreaks_8()
MsgBox Worksheets("Sheet1").HPageBreaks.Count
End Sub


処理内容:シートの印刷ページ数を取得します
Sub PageBreaks_9()
MsgBox "印刷全ページ数は = " & (ActiveSheet.HPageBreaks.Count + 1) * _
(ActiveSheet.VPageBreaks.Count + 1)
End Sub

3 改ページの解除

処理内容:改ページを解除します
Sub PageBreaks_10()
Worksheets("Sheet1").Cells.PageBreak = xlPageBreakNone
End Sub





印刷方法の設定

 印刷に際して、対象となるブックやシート、印刷ページ範囲・部数などを設定します。Excel メニューの「ファイル」「印刷」を選択したときに表示される「印刷」ダイアログボックスの内容を指定します。
 印刷の実行は、PrintOut メソッドを使用します。

[ PrintOut メソッドの構文 ]
 expression.PrintOut(From, To, Copies, Preview, ActivePrinter, PrintToFile, Collate, PrToFileName)

 expression では、印刷の対象となるブックやシートを指定します。
  選択した部分 ・・・・  Selection
  選択したシート ・・・ Activesheet
  ブック全体 ・・・・・・・ ActiveWorkbook

 PrintOut メソッドの引数とその内容は次のとおりです。

引   数 内               容
From 省略可能です。印刷開始ページ番号を指定します。既定値は 1 です。
To 省略可能です。印刷終了ページ番号を指定します。
Copies 省略可能です。印刷部数を指定します。既定値は 1 です。 
Preview 省略可能です。True のときに、印刷実行前に印刷プレビューを実行します。False、または省略すると、直ちに印刷を行います。
ActivePrinter 省略可能です。アクティブなプリンタの名前を指定します。 
PrintToFile 省略可能です。True のとき、ファイルへ出力します。引数 PrToFileName が省略された場合、出力先のファイル名を指定するためのダイアログ ボックスを表示します。 
Collate 省略可能です。True のときは、部単位で印刷します。 
PrToFileName 省略可能です。引数 PrintToFile が True の場合、この引数に印刷したいファイルの名前を指定します 





印刷実行方法の指定

処理内容:印刷するシートをプレビューで確認します
Sub PrintOut_1()
Worksheets("Sheet1").Select
ActiveSheet.PrintPreview
End Sub


処理内容:1ページから 5 ページまで 2 部(部単位)印刷します
Sub PrintOut_2()
Worksheets("Sheet1").Select
ActiveSheet.PrintOut From:=1 To:=5 Copies:=2 Collate:=True
ActiveSheet.PageSetup.PrintArea = "A2:BA" & LRpw
End Sub


処理内容:ックの任意のシート(シート名「Sheet1」と「Sheet2」)を一括して印刷します
Sub PrintOut_3()
Sheets(Array("Sheet1", "Sheet2")).PrintOut
End Sub


処理内容:選択範囲を印刷します
Sub PrintOut_4()
Worksheets("Sheet1").Select
Range("A1:C5").PrintOut
End Sub


処理内容:ブックのシート全部を印刷します
Sub PrintOut_5()
ActiveWorkbook.Worksheets.PrintOut
End Sub

処理内容:奇数・偶数ページ毎に分けて印刷します
Sub PrintOut_6()
Dim pSelect As String, Num As Integer, tPage As Integer
pSelect = "印刷方法を番号で指定してください" & vbCrLf & _
"1.奇数ページ  2.偶数ページ"
Num = Application.InputBox(pSelect, Title:="印刷方法選択")
tPage = (ActiveSheet.HPageBreaks.Count + 1) * _
(ActiveSheet.VPageBreaks.Count + 1)
If Num = 1 Then j = 1
ElseIf Num = 2 Then j = 2
Else: Exit Sub
End If
For i = j To tPage Step 2
ActiveSheet.PrintOut From:=i, To:=i
Next i
End Sub





楽天モバイル[UNLIMITが今なら1円] ECナビでポインと Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!


無料ホームページ 無料のクレジットカード 海外格安航空券 解約手数料0円【あしたでんき】 海外旅行保険が無料! 海外ホテル